#include "VentanaPrincipal.h"
#include "PanelFondo.h"

#include <iostream>
#include <map>
#include <string>

VentanaPrincipal::VentanaPrincipal() {
    set_title(ENCABEZADO_CLIENTE);
    set_position(Gtk::WIN_POS_CENTER_ALWAYS);
    set_default_size(ANCHO_VENTANA_PRINCIPAL, ALTO_VENTANA_PRINCIPAL);

    panelLogin = new PanelLogin(ANCHO_VENTANA_PRINCIPAL, 
                                ALTO_VENTANA_PRINCIPAL);

    panelPartida = new PanelElegirPartida(ANCHO_VENTANA_PRINCIPAL,
                                          ALTO_VENTANA_PRINCIPAL);

    panelDescargando = new PanelFondo(IMAGEN_FONDO_HOME,
									  ANCHO_VENTANA_PRINCIPAL, 
									  ALTO_VENTANA_PRINCIPAL);

    panelJuego = new PanelJuego(800, ALTO_VENTANA_PRINCIPAL);

    panelActivo = NULL;

	add(layout);
    show_all_children();
}

void VentanaPrincipal::mostrarPantallaDescargando() {
    layout.remove(*panelActivo);
	layout.remove(statusBar);
	
    layout.add(*panelDescargando);
	layout.add(statusBar);
	
    panelActivo = panelDescargando;

    resize(panelActivo->get_width(), panelActivo->get_height());
    show_all_children();
}

void VentanaPrincipal::mostrarPantallaLogin() {
    layout.add(*panelLogin);
	layout.add(statusBar);

    panelActivo = panelLogin;

    resize(panelActivo->get_width(), panelActivo->get_height());
	
	statusBar.push("Ingrese su usuario y contraseña");
    show_all_children();
}

void VentanaPrincipal::lanzarAviso(std::string m) {
    panelActivo->lanzarAviso(m);
}

Gtk::Statusbar* VentanaPrincipal::getStatusBar() {
return &(this->statusBar);
}

void VentanaPrincipal::mostrarPantallaJuego() {
    layout.remove(*panelActivo);
	layout.remove(statusBar);

    layout.add(*panelJuego);
	layout.add(statusBar);

    panelActivo = panelJuego;

    resize(panelActivo->get_width(), panelActivo->get_height());
	
	statusBar.pop();
    show_all_children();
}



void VentanaPrincipal::mostrarPantallaEleccionPartida(int nivelMaximo,
        std::map<int, int> *jugadoresPorNivel) {
    layout.remove(*panelActivo);
	layout.remove(statusBar);
	
    panelPartida->configurar(nivelMaximo, jugadoresPorNivel);
    
	layout.add(*panelPartida);
	layout.add(statusBar);

    panelActivo = panelPartida;

    resize(panelActivo->get_width(), panelActivo->get_height());

	statusBar.pop();
	statusBar.push("Cree o seleccione una partida");
    show_all_children();
}

VentanaPrincipal::~VentanaPrincipal() {
    delete panelLogin;
    delete panelPartida;
    delete panelDescargando;
    delete panelJuego;
}
